// todo   模块代码
export default {
  // 开启命名空间
  namespaced: true,

  state: {
    // 本地存储取出数据
    list: JSON.parse(localStorage.getItem("vuex_todos")) || [],
    // 点击高亮      one 全部     two 未完成     three 未完成
    type: "one",
  },

  mutations: {
    // 修改任务的完成状态
    changeDone(state, id) {
      const res = state.list.find((item) => item.id === id);
      res.isDone = !res.isDone;
    },

    // 删除对应的任务
    delDone(state, id) {
      state.list = state.list.filter((item) => item.id !== id);
    },

    // 添加对应的任务
    add(state, name) {
      state.list.unshift({
        id: +new Date(),
        name,
        isDone: false,
      });
    },

    //影响全选反选
    changeIsAll(state, val) {
      state.list.forEach((item) => (item.isDone = val));
    },

    // 点击按钮 清除已完成
    clearDone(state) {
      state.list = state.list.filter((item) => !item.isDone);
    },

    //点击修改 type 类型
    changeType(state, type) {
      state.type = type;
    },
  },

  getters: {
    // 计算剩余未完成任务
    count(state) {
      return state.list.filter((item) => !item.isDone).length;
    },
    //计算 清除按钮是否显示
    showClear(state) {
      return state.list.some((item) => item.isDone);
    },
    // 点击按钮筛选
    showList(state) {
      if (state.type === "two") {
        return state.list.filter((item) => !item.isDone);
      } else if (state.type === "three") {
        return state.list.filter((item) => item.isDone);
      } else {
        return state.list;
      }
    },
  },

  actions: {
    clearDoneAsync(context) {
      setTimeout(() => {
        context.commit("clearDone");
      }, 500);
    },
  },
};
